/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoBaseDatos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedList;
//import Controladores.Form.TomarCedulaMostrarExpediente;
import Controladores.Form.InsertarCapacitacionesForm;
import Controladores.Form.InsertarCongresosForm;
import Controladores.Form.InsertarFormacionAcademicaForm;
import Controladores.Form.InsertarProyectosForm;
import Controladores.Form.InsertarNuevoProfesorForm;
import Controladores.Form.InsertarPublicacionForm;
import Controladores.Form.InsertarReferenciaForm;
import ClasesParaConsultaJsp.Capacitaciones;
//import org.apache.struts.action.ActionForm;
/**
 *
 * @author Franklin
 */
public class GatewayExpediente {
    //private static LinkedList<InsertarCapacitacionesForm> listaCapacitaciones;
    //private static LinkedList<InsertarCongresosForm> listaCongresos;
    private static LinkedList<InsertarFormacionAcademicaForm> listaFormacionAcademica;
    private static LinkedList<InsertarProyectosForm> listaProyectos;
    //private static LinkedList<InsertarNuevoProfesorForm> listaProfesor;//solo va a devolver uno
    private static LinkedList<InsertarPublicacionForm> listaPublicaciones;
    //private Controladores.Form.TomarCedulaMostrarExpediente formulario;
    //String cedula;
    
    public GatewayExpediente(){
        //listaCapacitaciones=new LinkedList<InsertarCapacitacionesForm>();
        //listaCongresos=new LinkedList<InsertarCongresosForm>();
        listaFormacionAcademica=new LinkedList<InsertarFormacionAcademicaForm>();
        listaProyectos=new LinkedList<InsertarProyectosForm>();
        //listaProfesor=new LinkedList<InsertarNuevoProfesorForm>();
        listaPublicaciones=new LinkedList<InsertarPublicacionForm>(); 
        //formulario=(Controladores.Form.TomarCedulaMostrarExpediente) form;
        //cedula = c;
    }
    
    public static LinkedList<InsertarNuevoProfesorForm> getProfesor(String cedula){
      LinkedList<InsertarNuevoProfesorForm> listaProfesor =new LinkedList<InsertarNuevoProfesorForm>();
        //LinkedList<IDProfesores> listaContactos=new LinkedList<IDProfesores>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select * from Profesor where cedula='"+cedula+"'");
             while (rs.next()){
                InsertarNuevoProfesorForm profe = new InsertarNuevoProfesorForm();
                profe.setCedula(rs.getString("cedula"));
                profe.setNombre(rs.getString("nombre"));
                profe.setNacionalidad(rs.getString("nacionalidad"));
                profe.setTelefono(rs.getString("telefono"));
                profe.setDireccion(rs.getString("direccion"));
                listaProfesor.add(profe);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaProfesor;
   }//fin metodo
    
   public static LinkedList<InsertarCapacitacionesForm> getCapacitaciones(String cedula){
      LinkedList<InsertarCapacitacionesForm> listaCapacitaciones=new LinkedList<InsertarCapacitacionesForm>();
      //LinkedList<Capacitaciones> listaCapacitaciones=new LinkedList<Capacitaciones>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      //boolean exito =false;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select C.nombreCapacitacion,C.fechaCapacitacion,C.institucion,C.certificado,C.descripcion  from Capacitaciones C, ParticipaCapacitaciones PC where C.nombreCapacitacion=PC.nombreCapacitacion && C.fechaCapacitacion=PC.fechaCapacitacion && PC.cedulaProfesor='"+cedula+"'");
             //ResultSet rs = st.executeQuery("select * from Capacitaciones");
             while (rs.next()){
                //Capacitaciones capa = new Capacitaciones();
                InsertarCapacitacionesForm capa = new InsertarCapacitacionesForm();   
                
                capa.setNombre(rs.getString("nombreCapacitacion"));
                //exito = true;
                capa.setFecha(rs.getString("fechaCapacitacion"));
                capa.setInstitucion(rs.getString("institucion"));
                capa.setCertificado(rs.getString("certificado"));
                capa.setDescripcion(rs.getString("descripcion"));
                listaCapacitaciones.add(capa);
                
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaCapacitaciones;
      //return exito;
   }//fin metodo 
    
    
   
   public static LinkedList<InsertarCongresosForm> getCongresos(String cedula){
      LinkedList<InsertarCongresosForm> listaCongresos=new LinkedList<InsertarCongresosForm>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select C.codigoCongreso,C.nombre,C.fechaInicio,C.fechaConclusion,C.pais,C.ponencia,C.descripcion from Congresos C, AsisteCongresos A where C.codigoCongreso=A.codigoCongreso && A.cedulaProfesor='"+cedula+"'");
             //ResultSet rs = st.executeQuery("select * from Congresos");
             while (rs.next()){
                InsertarCongresosForm congreso = new InsertarCongresosForm();
                congreso.setCodigoCongreso(rs.getString("codigoCongreso"));
                congreso.setNombre(rs.getString("nombre"));
                congreso.setFechaInicio(rs.getString("fechaInicio"));
                congreso.setFechaTerminacion(rs.getString("fechaConclusion"));
                congreso.setPais(rs.getString("pais"));
                congreso.setPonencia(rs.getString("ponencia"));
                congreso.setDescripcion(rs.getString("descripcion"));
                listaCongresos.add(congreso);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaCongresos;
   }//fin metodo
   
   
   
   public static LinkedList<InsertarProyectosForm> getProyectos(String cedula){
      LinkedList<InsertarProyectosForm> listaProyectos=new LinkedList<InsertarProyectosForm>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select P.codigoProyecto,P.nombre,P.tipo,P.fechaInicio,P.fechaConclusion,P.rol,P.descripcion from Proyectos P, tieneProyectos tp where P.codigoProyecto=tp.codigoProyecto && tp.cedulaProfesor='"+cedula+"'");
             //ResultSet rs = st.executeQuery("select * from Congresos");
             while (rs.next()){
                InsertarProyectosForm proyecto = new InsertarProyectosForm();
                proyecto.setCodigoProyecto(rs.getString("codigoProyecto"));
                proyecto.setNombre(rs.getString("nombre"));
                proyecto.setTipo(rs.getString("tipo"));
                proyecto.setFechaInicio(rs.getString("fechaInicio"));
                proyecto.setFechaConclusion(rs.getString("fechaConclusion"));
                proyecto.setRol(rs.getString("rol"));
                proyecto.setDescripcion(rs.getString("descripcion"));
                listaProyectos.add(proyecto);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaProyectos;
   }//fin metodo

   public static LinkedList<InsertarFormacionAcademicaForm> getFormacionAcademica(String cedula){
      LinkedList<InsertarFormacionAcademicaForm> listaFA=new LinkedList<InsertarFormacionAcademicaForm>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select * from FormacionAcademicaProfesor where cedulaProfesor='"+cedula+"'");
             //ResultSet rs = st.executeQuery("select * from Congresos");
             while (rs.next()){
                InsertarFormacionAcademicaForm FA = new InsertarFormacionAcademicaForm();
                FA.setCedulaProfesor(rs.getString("cedulaProfesor"));
                FA.setNumeroTitulo(rs.getString("numeroTitulo"));
                FA.setGrado(rs.getString("nombreTitulo"));
                FA.setFecha(rs.getString("fechaObtencion"));
                FA.setNombreEspecialidad(rs.getString("nombreEspecialidad"));
                FA.setInstitucion(rs.getString("nombreInstitucion"));
                listaFA.add(FA);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaFA;
   }//fin metodo
   
   
   public static LinkedList<InsertarPublicacionForm> getPublicaciones(String cedula){
      LinkedList<InsertarPublicacionForm> listaPublicaciones=new LinkedList<InsertarPublicacionForm>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select P.nombrePublicacion, P.fechaPublicacion, P.Abstract from Publicaciones P, realizaPublicaciones RP where P.nombrePublicacion=RP.nombrePublicacion && P.fechaPublicacion=RP.fechaPublicacion && RP.cedulaProfesor='"+cedula+"'");
             //ResultSet rs = st.executeQuery("select * from Congresos");
             while (rs.next()){
                InsertarPublicacionForm publicacion = new InsertarPublicacionForm();
                publicacion.setNombre(rs.getString("nombrePublicacion"));
                publicacion.setFecha(rs.getString("fechaPublicacion"));
                publicacion.setSumario(rs.getString("Abstract"));
                listaPublicaciones.add(publicacion);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaPublicaciones;
   }//fin metodo
    
   
   
   public static LinkedList<InsertarReferenciaForm> getReferencias(String cedula){
      LinkedList<InsertarReferenciaForm> listaReferencias=new LinkedList<InsertarReferenciaForm>();
      ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
      Connection conn = null;
      try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select RP.nombrePublicacion, RP.fechaPublicacion, R.NombreReferencia,R.nombreRevista,R.autores,R.volumen,R.numero from realizaPublicaciones RP, Referencias R where RP.nombrePublicacion = R.nombrePublicacion && RP.fechaPublicacion=R.fechaPublicacion && RP.cedulaProfesor='"+cedula+"' group by RP.nombrePublicacion, RP.fechaPublicacion");
             //ResultSet rs = st.executeQuery("select * from Congresos");
             while (rs.next()){
                InsertarReferenciaForm referencia = new InsertarReferenciaForm();
                referencia.setNombrePublicacion(rs.getString("nombrePublicacion"));
                referencia.setFechaPublicacion(rs.getString("fechaPublicacion"));
                referencia.setNombreReferencia(rs.getString("NombreReferencia"));
                referencia.setNombreRevista(rs.getString("nombreRevista"));
                referencia.setAutores(rs.getString("autores"));
                referencia.setVolumen(rs.getString("volumen"));
                referencia.setNumero(rs.getString("numero"));
                listaReferencias.add(referencia);
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
      return listaReferencias;
   }//fin metodo
   
   
   
}//fin clase




